package houserent.service;

import houserent.domain.House;

/**
 * @author 杨森
 * @date 2022年10月12日 14:55
 * 定义House【】，保存House对象
 * 1.响应HouseView的调用
 * 2.完成对房屋信息的各种操作（CRUD）
 */
public class HouseService {
    private House[] houses;//保存House对象
    private int houseNums=1;//记录当前有多少个房屋信息
    private int idCounter=1;//记录当前的id增长
    public HouseService(int size){
//        new houses
        houses = new House[size];//当创建HouseService对象，指定数组大小

//        测试列表
        houses[0] = new House(1,"jack","112","海淀区",2000,"未出租");
    }

//    list方法，返回houses
    public House[] list(){
        return  houses;
    }

//    add方法，添加新对象，返回boolean
    public boolean add(House newHouse){
//        判断是否还可以继续添加(暂时不考虑数组扩容的问题)
        if (houseNums==houses.length){
            System.out.println("数组已满，不能再添加");
            return false;
        }
//        把newHouse对象加入，新增一个房屋
        houses[houseNums++]=newHouse;
//        id自增
        newHouse.setId(++idCounter);
        return true;
    }

//    delete方法，删除房屋信息
    public boolean del(int delId){
//        先找到要删除的房屋信息对应的下标
        int index=-1;
        for (int i = 0; i < houseNums; i++) {
            if (delId==houses[i].getId()) {//要删除的房屋（id），是数组下标为i的元素
                index=i;
            }
        }

        if (index == -1){//说明delId在数组中不存在
            return false;
        }
        for (int i = index; i <houseNums-1 ; i++) {
            houses[i]=houses[i+1];
        }
        houses[--houseNums]=null;//把当有存在的房屋信息的最后一个 设置为null
        return true;
    }

//    find方法 通过id查找房屋信息
    public House findById(int findId){
        for (int i = 0; i <houseNums ; i++) {
            if (houses[i].getId()==findId) {
//                System.out.println("\t=============找到房屋信息=============");
//                System.out.println("编号\t\t房主\t\t电话\t\t地址\t\t月租\t\t状态(未出租/已出租)");
//                System.out.println(houses[i].toString());
//            }else {
//                System.out.println("\t=============没有找到你要查找的房屋信息=============");
//            }
            return houses[i];
            }

        }
        return null;
    }
}
